學了就要懂的實用啊,不然只光學不去動手做,這樣菜鳥永遠翻不了身,菜鳥永遠就是菜鳥
在設計 MySql 的 Dcokerfile 之前,先想想看需求是什麼,這樣才能邊設計邊找資源
需求:
建立一個名為Dockerfile
FROM mysql:latest
# 設定環境變數
ENV MYSQL_DATABASE=ItDB
ENV MYSQL_USER=ITUser
ENV MYSQL_PASSWORD=*********
ENV MYSQL_ROOT_PASSWORD=*********
# COPY my.cnf /etc/my.cnf
RUN echo '[mysqld]' >> /etc/my.cnf \
&& echo "general_log = 1" >> /etc/my.cnf \
&& echo "general_log_file = /var/log/mysqld.log" >> /etc/my.cnf \
&& echo "log_output = file" >> /etc/my.cnf
# 指定路徑
WORKDIR /var/lib/mysql
# 指定容器運行時使用的預設命令
CMD ["mysqld"]
如果想省事設定Log相關參數,可以直接在本機建立一個 my.cnf 並且寫關參數,然後用COPY本機的my.cnf到Container 的路徑 /etc/my.cnf
my.cnf
[mysqld]
general_log = 1
general_log_file = /var/log/mysqld.log
log_output = file
下docker指令建立Image
docker build -t "Image Name" .
*看到指令最後有個 " . " 那個指的是當下路徑的 Dockerfile
*如果不想命名為 Dockerfile 想要自己名命也可以那docker指令如下docker build -t "Image Name" "Dockerfile Path"
啟動 MySql Container
docker run --name "Container Name" -p 3306:3306 mysql
MySql Container 啟動完成,我們直接連線看看
按測試連線如果是跟下面圖片一樣代表有連線成功
去確認是否有Database ItDB
我進入 MySql Container 查看是否與Dockerfile設計的一樣
docker exec -it "Container Name" bash
查看起始路徑是否為/var/lib/mysql
pwd
可以驗證我們Dockerfile
查看/etc/my.cnf
cat /etc/my.cnf
可以驗證我們Dockerfile
查看/var/log/mysqld.log
cat /var/log/mysqld.log
可以看到Mysql的log紀錄
直接實作一步一步驗證 Dockerfile 的用法,自己所設計的 Dockerfile ,並且有實體的資訊呈現在眼前,是不是又更清楚了解,當然這些參數設定只是一小塊,當然有更多可以自己設定,這就要依自己的需求去找資料,不可能一次就能建立好自己所想要的 Dockerfile,所以要有耐心的找資料去解決你的問題